library(tidyverse)
library(ggplot2)
library(GGally)

estimated parameter values

aic.df <- read_csv("~/plots/all_data/aic.csv")

#add the replicate info


aic.df <- aic.df %>% 
  mutate(exp.field = paste0(str_split(cell.id, "_", simplify = T)[,2],"_",
                            str_split(cell.id, "_", simplify = T)[,3]),
    colony = case_when(exp.field %in% c("20min_s3", "20min_s4") ~ "Replicate 1", 
                            exp.field %in% c("20min_s5", "20min_s6") ~ "Replicate 2",
                            exp.field %in% c("20min_s7", "20min_s8" , "20min_s9") ~ "Replicate 3"))

aic.df <- aic.df %>% 
  mutate(colony = ifelse(degron == "stable" & red == "pup1-rfp", 
                         case_when(exp.field %in% c("20min_s4", "20min_s5") ~ "Replicate 1",
                                   exp.field %in% c("20min_s6", "20min_s7") ~ "Replicate 2",
                                   exp.field %in% c("20min_s8", "20min_s9") ~ "Replicate 3"), colony)) 
  # filter(value < 0.05)
  

Cellular attributes

pup1.cell.attr <- read_csv("~/plots/all_data/all_pup1_cell_attr.csv")
Rows: 19396 Columns: 29
── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (4): cell.id, degron, red, treatment
dbl (25): gfp.mean.bg.af.sub.new, gfp.sum.bg.af.sub, area, area.puncta, BB_B, BB_C, Elip_B, Elip_C, no.of.voxels, ...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

#pup1-RFP background

pup1.cell.attr <- pup1.cell.attr %>% 
  mutate(exp.field = paste0(str_split(cell.id, "_", simplify = T)[,2],"_",
                            str_split(cell.id, "_", simplify = T)[,3]),
    colony = case_when(exp.field %in% c("20min_s3", "20min_s4") ~ "Replicate 1", 
                            exp.field %in% c("20min_s5", "20min_s6") ~ "Replicate 2",
                            exp.field %in% c("20min_s7", "20min_s8" , "20min_s9") ~ "Replicate 3"))

pup1.cell.attr <- pup1.cell.attr %>% 
  mutate(colony = ifelse(degron == "stable" & red == "pup1-rfp", 
                         case_when(exp.field %in% c("20min_s4", "20min_s5") ~ "Replicate 1",
                                   exp.field %in% c("20min_s6", "20min_s7") ~ "Replicate 2",
                                   exp.field %in% c("20min_s8", "20min_s9") ~ "Replicate 3"), colony)) 
  
#remooving the 40min and 60min experiments from the stable gfp experiments
pup1.cell.attr <- pup1.cell.attr %>%
  mutate(exp = str_split(exp.field, "_", simplify = T)[,1]) %>% 
  filter(exp == "20min")
pup1.cell.attr <- read_csv("~/plots/pup1-rfp-gfp-decay/4-28-21-8hrGFP/data/gfp_stable_filtered.csv") %>% 
  filter(image.no == 1) %>% 
  dplyr::select(cell.id, gfpSumBgAFsub) %>% 
  mutate(cell.id = paste0(cell.id,"_","stable_pup1-rfp_none")) %>% 
  dplyr::rename("gfp.sum.bg.af.sub" = "gfpSumBgAFsub") %>% 
  left_join(pup1.cell.attr %>% 
              filter(degron == "stable") %>% 
              dplyr::select(-gfp.sum.bg.af.sub),., by = "cell.id") %>% 
  bind_rows(pup1.cell.attr %>% 
              filter(degron != "stable"),.)
multiple.pup1 <- pup1.cell.attr %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta)) %>% 
  filter(rfp.mean.bg.sub.puncta > 0) %>% 
  group_by(cell.id) %>% 
  tally() %>% 
  filter(n>1)

pup1.cell.attr<- pup1.cell.attr %>% 
  group_by(cell.id) %>% 
  mutate(rfp.mean.bg.sub.puncta = ifelse(cell.id %in% multiple.pup1$cell.id , mean(rfp.mean.bg.sub.puncta), rfp.mean.bg.sub.puncta )) %>% 
    distinct(cell.id, .keep_all = TRUE) 

#proteasome inhibition experiments

protInhi.attr <- read_csv("~/plots/all_data/all_mg135_attr.csv") %>% 
  rename("cell.id" = "unique.trackID") %>% 
  filter(timepoint == 1) %>% 
  mutate(cell.id = paste0(cell.id ,"_",degron,"_",red,"_",treatment)) %>% 
  mutate(exp.field = paste0(str_split(cell.id, "_", simplify = T)[,2],"_",
                            str_split(cell.id, "_", simplify = T)[,3]),
    colony = case_when(exp.field %in% c("20min_s3", "20min_s4") ~ "Replicate 1", 
                            exp.field %in% c("20min_s5", "20min_s6") ~ "Replicate 2",
                            exp.field %in% c("20min_s7", "20min_s8" , "20min_s9") ~ "Replicate 3"))
Rows: 9142 Columns: 52
── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr  (8): unique.trackID, experiment, exp.field, field, sample, treatment, degron, red
dbl (44): gfp.mean.bg.af.sub.new, time, timepoint, image.no, ln.gfp, image, ln.gfp.dif, area, trackID, Elip_B, Eli...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
multiple.proInh <- protInhi.attr %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta)) %>% 
  filter(rfp.mean.bg.sub.puncta > 0) %>% 
  group_by(cell.id) %>% 
  tally() %>% 
  filter(n>1)

protInhi.attr <- protInhi.attr %>% 
  group_by(cell.id) %>% 
  mutate(rfp.mean.bg.sub.puncta = ifelse(cell.id %in% multiple.proInh$cell.id , mean(rfp.mean.bg.sub.puncta), rfp.mean.bg.sub.puncta),
         rfp.sum.bg.sub.puncta = ifelse(cell.id %in% multiple.proInh$cell.id, sum(rfp.mean.bg.sub.puncta), rfp.sum.bg.sub.puncta)) %>% 
    distinct(cell.id, .keep_all = TRUE)  
  
pup1.proInhi.attr <- pup1.cell.attr %>% 
  bind_rows(.,protInhi.attr %>% 
              dplyr::select(-time, 
                            -timepoint,
                            -image.no, 
                            -ln.gfp, 
                            -ln.gfp.dif,
                            -trackID,
                            -gfp.intensity.center,
                            -gfp.int.mean,
                            -gfp.int.median,
                           -gfp.int.sum,
                           -no.of.triangles,
                           -field,
                           -time.dif.gfp,
                           -real.time.gfp,
                           -sample,
                           -avg.gfp.bg,
                           -Min_gfp,
                           -gfp.mean.bg.sub,
                           -value,
                           -t80,
                           -t95,
                           -threshold,
                           -threshold_95,
                           -gfp.mean.bg.af.sub,
                           -threshold_80,
                           -Mean_gfp,
                           -image,
                           -experiment,
                           -gfp.sum.bg.sub))

#selecting the dy values from the 2-parameter maturation model

# dy.pup1.rep1.all <- aic.df %>% 
#   filter(red == "pup1-rfp", treatment == "none", degron %in% c("cln2.3","mODC.2", "stable.2") ) %>% 
#   filter(ifelse(degron == "stable.2", dy < 0.1, dy < 0.5)) %>% 
#   group_by(cell.id) %>% 
#   # filter(model == "exponential") 
#   filter(ifelse(degron == "mODC.2", model == "dy.dm", model == "exponential")) %>%
#   mutate(dm = ifelse(is.na(dm), Inf, dm)) %>%
#   filter( dm > 0.00001)
# 
# dy.pup1.rep1 <- aic.df %>% 
#   filter(red == "pup1-rfp", treatment == "none", degron %in% c("cln2.3","mODC.2", "stable.2") ) %>% 
#   filter(ifelse(degron == "stable.2", dy < 0.1, dy < 0.5)) %>% 
#   group_by(cell.id) %>% 
#   filter(model == "exponential") 
#   # filter(ifelse(degron == "mODC.2", model == "dy.dm", model == "exponential")) %>%
#   # mutate(dm = ifelse(is.na(dm), Inf, dm)) %>%
#   # filter( dm > 0.00001)

#only dy.dm
dy.pup1.rep1.mat <- aic.df %>% 
  filter(red == "pup1-rfp" ) %>% 
  filter(ifelse(degron %in% c( "stable","stable.3","stable.2"), dy < 0.1, dy < 0.5)) %>% 
  group_by(cell.id) %>% 
  filter(model == "dy.dm") %>% 
  mutate(dm = ifelse(is.na(dm), Inf, dm)) %>%
  filter( dm > 0.00001)

#with exponential model for all the GFPs

fig2.df <- dy.pup1.rep1 %>% 
  left_join(.,pup1.cell.attr %>%
              filter(red == "pup1-rfp", treatment == "none", degron %in% c("cln2.3","mODC.2", "stable.2")), by = c("cell.id","treatment","degron","red","colony","exp.field"))

multiple.pup1 <- fig2.df %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta)) %>% 
  filter(rfp.mean.bg.sub.puncta > 0) %>% group_by(cell.id) %>% tally() %>% filter(n>1)

fig2.df <- fig2.df %>% 
  group_by(cell.id) %>% 
  mutate(rfp.mean.bg.sub.puncta = ifelse(cell.id %in% multiple.pup1$cell.id , mean(rfp.mean.bg.sub.puncta), rfp.mean.bg.sub.puncta )) %>% 
    distinct(cell.id, .keep_all = TRUE) 

#with dy.dm model for mODC and exponential for cln2 and canonical GFP

fig2.df.all <- dy.pup1.rep1.all %>% 
  left_join(.,pup1.cell.attr %>%
              filter(red == "pup1-rfp", treatment == "none", degron %in% c("cln2.3","mODC.2", "stable.2")), by = c("cell.id","treatment","degron","red","colony","exp.field"))

multiple.pup1 <- fig2.df.all %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta)) %>% 
  filter(rfp.mean.bg.sub.puncta > 0) %>% group_by(cell.id) %>% tally() %>% filter(n>1)

fig2.df.all <- fig2.df.all %>% 
  group_by(cell.id) %>% 
  mutate(rfp.mean.bg.sub.puncta = ifelse(cell.id %in% multiple.pup1$cell.id , mean(rfp.mean.bg.sub.puncta), rfp.mean.bg.sub.puncta )) %>% 
    distinct(cell.id, .keep_all = TRUE) 

#with dy.dm model for all the exp

fig2.df.mat <- dy.pup1.rep1.mat %>% 
  left_join(.,pup1.cell.attr %>%
              filter(red == "pup1-rfp"), by = c("cell.id","treatment","degron","red","colony","exp.field"))

#filter for SSE < 0.05

fig2.df.2 <- fig2.df %>% filter(value< 0.05)
fig2.df.all.2 <- fig2.df.all %>% filter(value< 0.05)

fig2.df.mat <- fig2.df.mat %>% filter(value< 0.05)

#customed ggpairs function


my_fn <- function(data, mapping, ...){
  p <- ggplot(data = data, mapping = mapping) + 
    ggpointdensity::geom_pointdensity(size = 0.1)+
    # geom_point(size = 0.1, alpha = 0.1) + 
    geom_smooth(method="lm",  color="red4", se = FALSE, lwd = 0.5)
  p
}

ggpairs.custome <- function(df){
  ggpairs.plot <- df %>%  
  mutate(colony = case_when(colony == "Replicate 1" ~ "1",
                            colony == "Replicate 2" ~ "2",
                            colony == "Replicate 3" ~ "3")) %>% 
  ungroup() %>% 
  select(dm,
    # colony,
    gfp.mean.bg.af.sub.new, 
    # gfp.sum.bg.af.sub, 
    rfp.mean.bg.sub.puncta, 
    # rfp.sum.bg.sub.puncta,
    dapi.sum.bg.sub.puncta, 
    area,
    # volume,
    # no.of.voxels,
    # area.puncta,
    elipe_shape,
    # dy,#removed t.half and added dy
    t.half) %>% 
  rename("GFP" = "gfp.mean.bg.af.sub.new",
         # "GFP.sum" = "gfp.sum.bg.af.sub",
         "Pup1- tDimer" = "rfp.mean.bg.sub.puncta",
         # "rfp.sum" = "rfp.sum.bg.sub.puncta",
         "Dapi" = "dapi.sum.bg.sub.puncta",
         "Area" = "area",
         # "voxels" = "no.of.voxels",
         # "Nuclear Size" = "area.puncta",
         "Shape" = "elipe_shape",
         # "rate of decay" = "dy",
         "Half-Life [min.]" = "t.half",
         "Rate of Maturation" = "dm") %>%
         # "Replicate" = "colony") %>% 
  ggpairs(.,
          # legend = 1,
          columns = 1:7,
          # mapping = ggplot2::aes(color = Replicate),
          lower = list(continuous = my_fn,
                      discrete = "blank", 
                      combo="blank"), 
           diag = list(discrete="barDiag", 
                      continuous = wrap("densityDiag", alpha=0.5 )),
          upper = list(discrete= wrap("barDiag" , outlier.size = 0.5),
                       combo = wrap("box_no_facet", outlier.size = 0.5),
                       continuous = wrap("cor", display_grid = FALSE, size = 2.5 , method = "pearson", color = "red4")),
          labeller = label_wrap_gen(width = 2, multi_line = TRUE), 
          proportions = c())+
  theme_bw()+
  theme(text = element_text(size = 6),
        legend.position = "bottom",
        panel.grid.major = element_blank(),
        axis.text.x = element_text(angle = 30, hjust = 1))
  # scale_fill_brewer( palette = "Set2")+
  # scale_color_brewer(palette = "Set2")+
  
  return(ggpairs.plot)
}

mODC correlations based on the dm values

#dm <1
fig2.df.all %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta),
         dm = ifelse(is.na(dm), Inf, dm),
         elipe_shape = Elip_B/Elip_C, 
         t.half = log(2)/dy) %>% 
  filter(degron == "mODC.2",
         rfp.mean.bg.sub.puncta > 0, 
         dm < 1) %>% 
  mutate(colony = case_when(colony == "Replicate 1" ~ "1",
                            colony == "Replicate 2" ~ "2",
                            colony == "Replicate 3" ~ "3")) %>% 
  ungroup() %>% 
  select(colony,
    t.half, gfp.mean.bg.af.sub.new, rfp.mean.bg.sub.puncta, dapi.sum.bg.sub.puncta, area, elipe_shape) %>%
  rename("gfp.m" = "gfp.mean.bg.af.sub.new",
         "pup1" = "rfp.mean.bg.sub.puncta",
         "dapi" = "dapi.sum.bg.sub.puncta") %>% 
  ggpairs(.,legend = 1,
          columns = 1:7,
    mapping = ggplot2::aes(color = colony),
         lower = list(continuous = wrap("smooth", se = F, alpha = 0.5, size = 0.1) ), 
          upper = list(continuous = wrap("cor", size = 2.5)))+
  theme(text = element_text(size = 8),
        legend.position = "bottom")


#dm > 1
fig2.df.all %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta),
         dm = ifelse(is.na(dm), Inf, dm),
         elipe_shape = Elip_B/Elip_C, 
         t.half = log(2)/dy) %>% 
  filter(degron == "mODC.2",
         rfp.mean.bg.sub.puncta > 0, 
         dm > 1) %>% 
  mutate(colony = case_when(colony == "Replicate 1" ~ "1",
                            colony == "Replicate 2" ~ "2",
                            colony == "Replicate 3" ~ "3")) %>% 
  ungroup() %>% 
  select(colony,
    t.half, gfp.mean.bg.af.sub.new, rfp.mean.bg.sub.puncta, dapi.sum.bg.sub.puncta, area, elipe_shape) %>%
  rename("gfp.m" = "gfp.mean.bg.af.sub.new",
         "pup1" = "rfp.mean.bg.sub.puncta",
         "dapi" = "dapi.sum.bg.sub.puncta") %>% 
  ggpairs(.,legend = 1,
          columns = 1:7,
    mapping = ggplot2::aes(color = colony),
         lower = list(continuous = wrap("smooth", se = F, alpha = 0.5, size = 0.1) ), 
          upper = list(continuous = wrap("cor", size = 2.5)))+
  theme(text = element_text(size = 8),
        legend.position = "bottom")

df with filtration on SSE < 0.05

modc.ggp.plt

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 0s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

#without the SSE <0.05 filter for mODC

modc.ggp.plt <- fig2.df.mat %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta),
         elipe_shape = Elip_B/Elip_C, 
         t.half = log(2)/dy) %>% 
  filter(degron == "mODC.2",rfp.mean.bg.sub.puncta > 0) %>% 
  ggpairs.custome(.)+
  ggtitle("Single-Cell Correlations of Various Cellular Features of GFP-mODC strain")


# fig2.df.all.2 %>% 
#   mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
#          rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta),
#          elipe_shape = Elip_B/Elip_C, 
#          t.half = log(2)/dy) %>% 
#   filter(degron == "mODC.2",rfp.mean.bg.sub.puncta > 0) %>% 
#   ggpairs.custome(.)



modc.ggp.plt

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 2s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 3s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 3s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 3s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 3s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 3s 
 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 3s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 3s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 3s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 3s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 3s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 3s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 3s 
 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 3s 
 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 3s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s 
 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 2s 
 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 2s 
 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 2s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 2s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 2s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 2s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 2s 
 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 2s 
 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 2s 
 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s 
 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s 
 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s 
 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s 
 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s 
 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s 
 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 1s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 1s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s 
 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s 
 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s 
 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s 
 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s 
 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s 
 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

#with proteasome inhibitors

trt.list <- fig2.df.mat %>% 
  filter(dm > 0.000015) %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta),
         elipe_shape = Elip_B/Elip_C, 
         t.half = log(2)/dy,
         dm = log10(dm)) %>% 
  filter(rfp.mean.bg.sub.puncta > 0, treatment != "none") %>% split(.$treatment)  
  

lapply(trt.list, function(a){
  a %>% 
    ggpairs.custome(.)+
    ggtitle(a$treatment[1])
})
$`1uM`

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 1s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

$`2.5uM`

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 1s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

$`50uM`

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 1s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

$`5uM`

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 1s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

$dmso1

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 2s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 3s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 3s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 3s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 3s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 2s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 2s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 1s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 1s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

$dmso2

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 0s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

for CLN2-GFP

cln2.ggp.plt.comb <- fig2.df.mat %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta),
         elipe_shape = Elip_B/Elip_C, 
         t.half = log(2)/dy,
         dm = log10(dm)) %>% 
  filter(degron %in% c("cln2.3","cln2.4"), rfp.mean.bg.sub.puncta > 0) %>%
  mutate(degron = ifelse(degron %in% c("cln2.3","cln2.4"), "GFP-CLN2", degron)) %>% 
  ggpairs.custome(.)+
  ggtitle("Single-Cell Correlations of Various Cellular Features of GFP-CLN2")
cln2.ggp.plt.comb

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 1s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

The relationship does’nt change when you use dy from dy.dm or exponential model for the CLN2.3 experiment

stable.ggp.plt.comb <- fig2.df.mat %>% 
  mutate(dapi.mean.bg.sub.puncta = ifelse(is.na(dapi.mean.bg.sub.puncta), 0, dapi.mean.bg.sub.puncta) , 
         rfp.mean.bg.sub.puncta = ifelse(is.na(rfp.mean.bg.sub.puncta), 0 , rfp.mean.bg.sub.puncta),
         elipe_shape = Elip_B/Elip_C,
         t.half = log(2)/dy,
         dm = log10(dm)) %>% 
  filter(degron %in% c("stable.2","stable.3"), rfp.mean.bg.sub.puncta > 0) %>% 
  mutate(degron = ifelse(degron %in% c("stable.2","stable.3"), "yeGFP", degron)) %>% 
  ggpairs.custome(.)+
  ggtitle("Single-Cell Correlations of Various Cellular Features of yeGFP")
stable.ggp.plt.comb

 plot: [1,1] [==>--------------------------------------------------------------------------------------------------------------------------------]  2% est: 0s 
 plot: [1,2] [====>------------------------------------------------------------------------------------------------------------------------------]  4% est: 1s 
 plot: [1,3] [=======>---------------------------------------------------------------------------------------------------------------------------]  6% est: 2s 
 plot: [1,4] [==========>------------------------------------------------------------------------------------------------------------------------]  8% est: 2s 
 plot: [1,5] [============>----------------------------------------------------------------------------------------------------------------------] 10% est: 2s 
 plot: [1,6] [===============>-------------------------------------------------------------------------------------------------------------------] 12% est: 2s 
 plot: [1,7] [==================>----------------------------------------------------------------------------------------------------------------] 14% est: 2s 
 plot: [2,1] [====================>--------------------------------------------------------------------------------------------------------------] 16% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [2,2] [=======================>-----------------------------------------------------------------------------------------------------------] 18% est: 2s 
 plot: [2,3] [==========================>--------------------------------------------------------------------------------------------------------] 20% est: 2s 
 plot: [2,4] [============================>------------------------------------------------------------------------------------------------------] 22% est: 2s 
 plot: [2,5] [===============================>---------------------------------------------------------------------------------------------------] 24% est: 2s 
 plot: [2,6] [==================================>------------------------------------------------------------------------------------------------] 27% est: 2s 
 plot: [2,7] [====================================>----------------------------------------------------------------------------------------------] 29% est: 2s 
 plot: [3,1] [=======================================>-------------------------------------------------------------------------------------------] 31% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,2] [==========================================>----------------------------------------------------------------------------------------] 33% est: 2s `geom_smooth()` using formula 'y ~ x'

 plot: [3,3] [============================================>--------------------------------------------------------------------------------------] 35% est: 2s 
 plot: [3,4] [===============================================>-----------------------------------------------------------------------------------] 37% est: 2s 
 plot: [3,5] [==================================================>--------------------------------------------------------------------------------] 39% est: 2s 
 plot: [3,6] [====================================================>------------------------------------------------------------------------------] 41% est: 2s 
 plot: [3,7] [=======================================================>---------------------------------------------------------------------------] 43% est: 2s 
 plot: [4,1] [==========================================================>------------------------------------------------------------------------] 45% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,2] [============================================================>----------------------------------------------------------------------] 47% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,3] [===============================================================>-------------------------------------------------------------------] 49% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [4,4] [==================================================================>----------------------------------------------------------------] 51% est: 1s 
 plot: [4,5] [=====================================================================>-------------------------------------------------------------] 53% est: 1s 
 plot: [4,6] [=======================================================================>-----------------------------------------------------------] 55% est: 1s 
 plot: [4,7] [==========================================================================>--------------------------------------------------------] 57% est: 1s 
 plot: [5,1] [=============================================================================>-----------------------------------------------------] 59% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,2] [===============================================================================>---------------------------------------------------] 61% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,3] [==================================================================================>------------------------------------------------] 63% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,4] [=====================================================================================>---------------------------------------------] 65% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [5,5] [=======================================================================================>-------------------------------------------] 67% est: 1s 
 plot: [5,6] [==========================================================================================>----------------------------------------] 69% est: 1s 
 plot: [5,7] [=============================================================================================>-------------------------------------] 71% est: 1s 
 plot: [6,1] [===============================================================================================>-----------------------------------] 73% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,2] [==================================================================================================>--------------------------------] 76% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,3] [=====================================================================================================>-----------------------------] 78% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,4] [=======================================================================================================>---------------------------] 80% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,5] [==========================================================================================================>------------------------] 82% est: 1s `geom_smooth()` using formula 'y ~ x'

 plot: [6,6] [=============================================================================================================>---------------------] 84% est: 0s 
 plot: [6,7] [===============================================================================================================>-------------------] 86% est: 0s 
 plot: [7,1] [==================================================================================================================>----------------] 88% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,2] [=====================================================================================================================>-------------] 90% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,3] [=======================================================================================================================>-----------] 92% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,4] [==========================================================================================================================>--------] 94% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,5] [=============================================================================================================================>-----] 96% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,6] [===============================================================================================================================>---] 98% est: 0s `geom_smooth()` using formula 'y ~ x'

 plot: [7,7] [===================================================================================================================================]100% est: 0s 
                                                                                                                                                               

#supplemental figure 4

ggsave(plot = stable.ggp.plt.1,  path = "~/plots/paper1/figures/fig_2/supplemental_figs/", filename = "figs4c.pdf", width = 8, height = 5)

 plot: [1,1] [>---------------------------------------------------------------------------------------]  1% est: 0s 
 plot: [1,2] [>---------------------------------------------------------------------------------------]  1% est: 7s 
 plot: [1,3] [=>--------------------------------------------------------------------------------------]  2% est:10s 
 plot: [1,4] [=>--------------------------------------------------------------------------------------]  3% est:11s 
 plot: [1,5] [==>-------------------------------------------------------------------------------------]  3% est:11s 
 plot: [1,6] [===>------------------------------------------------------------------------------------]  4% est:11s 
 plot: [1,7] [===>------------------------------------------------------------------------------------]  5% est:11s 
 plot: [1,8] [====>-----------------------------------------------------------------------------------]  6% est:12s 
 plot: [1,9] [=====>----------------------------------------------------------------------------------]  6% est:12s 
 plot: [1,10] [=====>---------------------------------------------------------------------------------]  7% est:13s 
 plot: [1,11] [======>--------------------------------------------------------------------------------]  8% est:12s 
 plot: [1,12] [======>--------------------------------------------------------------------------------]  8% est:13s 
 plot: [2,1] [=======>--------------------------------------------------------------------------------]  9% est:12s 
 plot: [2,2] [========>-------------------------------------------------------------------------------] 10% est:11s 
 plot: [2,3] [========>-------------------------------------------------------------------------------] 10% est:11s 
 plot: [2,4] [=========>------------------------------------------------------------------------------] 11% est:11s 
 plot: [2,5] [=========>------------------------------------------------------------------------------] 12% est:11s 
 plot: [2,6] [==========>-----------------------------------------------------------------------------] 12% est:11s 
 plot: [2,7] [===========>----------------------------------------------------------------------------] 13% est:11s 
 plot: [2,8] [===========>----------------------------------------------------------------------------] 14% est:11s 
 plot: [2,9] [============>---------------------------------------------------------------------------] 15% est:11s 
 plot: [2,10] [============>--------------------------------------------------------------------------] 15% est:11s 
 plot: [2,11] [=============>-------------------------------------------------------------------------] 16% est:11s 
 plot: [2,12] [=============>-------------------------------------------------------------------------] 17% est:11s 
 plot: [3,1] [==============>-------------------------------------------------------------------------] 17% est:11s 
 plot: [3,2] [===============>------------------------------------------------------------------------] 18% est:11s 
 plot: [3,3] [===============>------------------------------------------------------------------------] 19% est:10s 
 plot: [3,4] [================>-----------------------------------------------------------------------] 19% est:10s 
 plot: [3,5] [=================>----------------------------------------------------------------------] 20% est:10s 
 plot: [3,6] [=================>----------------------------------------------------------------------] 21% est:10s 
 plot: [3,7] [==================>---------------------------------------------------------------------] 22% est:10s 
 plot: [3,8] [===================>--------------------------------------------------------------------] 22% est:10s 
 plot: [3,9] [===================>--------------------------------------------------------------------] 23% est:10s 
 plot: [3,10] [====================>------------------------------------------------------------------] 24% est:10s 
 plot: [3,11] [====================>------------------------------------------------------------------] 24% est:10s 
 plot: [3,12] [=====================>-----------------------------------------------------------------] 25% est:10s 
 plot: [4,1] [======================>-----------------------------------------------------------------] 26% est:10s 
 plot: [4,2] [======================>-----------------------------------------------------------------] 26% est:10s 
 plot: [4,3] [=======================>----------------------------------------------------------------] 27% est: 9s 
 plot: [4,4] [=======================>----------------------------------------------------------------] 28% est: 9s 
 plot: [4,5] [========================>---------------------------------------------------------------] 28% est: 9s 
 plot: [4,6] [=========================>--------------------------------------------------------------] 29% est: 9s 
 plot: [4,7] [=========================>--------------------------------------------------------------] 30% est: 9s 
 plot: [4,8] [==========================>-------------------------------------------------------------] 31% est: 9s 
 plot: [4,9] [===========================>------------------------------------------------------------] 31% est: 9s 
 plot: [4,10] [===========================>-----------------------------------------------------------] 32% est: 9s 
 plot: [4,11] [===========================>-----------------------------------------------------------] 33% est: 9s 
 plot: [4,12] [============================>----------------------------------------------------------] 33% est: 9s 
 plot: [5,1] [=============================>----------------------------------------------------------] 34% est: 8s 
 plot: [5,2] [==============================>---------------------------------------------------------] 35% est: 8s 
 plot: [5,3] [==============================>---------------------------------------------------------] 35% est: 8s 
 plot: [5,4] [===============================>--------------------------------------------------------] 36% est: 8s 
 plot: [5,5] [===============================>--------------------------------------------------------] 37% est: 8s 
 plot: [5,6] [================================>-------------------------------------------------------] 38% est: 8s 
 plot: [5,7] [=================================>------------------------------------------------------] 38% est: 8s 
 plot: [5,8] [=================================>------------------------------------------------------] 39% est: 8s 
 plot: [5,9] [==================================>-----------------------------------------------------] 40% est: 8s 
 plot: [5,10] [==================================>----------------------------------------------------] 40% est: 8s 
 plot: [5,11] [===================================>---------------------------------------------------] 41% est: 8s 
 plot: [5,12] [===================================>---------------------------------------------------] 42% est: 7s 
 plot: [6,1] [====================================>---------------------------------------------------] 42% est: 7s 
 plot: [6,2] [=====================================>--------------------------------------------------] 43% est: 7s 
 plot: [6,3] [=====================================>--------------------------------------------------] 44% est: 7s 
 plot: [6,4] [======================================>-------------------------------------------------] 44% est: 7s 
 plot: [6,5] [=======================================>------------------------------------------------] 45% est: 7s 
 plot: [6,6] [=======================================>------------------------------------------------] 46% est: 7s 
 plot: [6,7] [========================================>-----------------------------------------------] 47% est: 7s 
 plot: [6,8] [=========================================>----------------------------------------------] 47% est: 7s 
 plot: [6,9] [=========================================>----------------------------------------------] 48% est: 7s 
 plot: [6,10] [=========================================>---------------------------------------------] 49% est: 7s 
 plot: [6,11] [==========================================>--------------------------------------------] 49% est: 6s 
 plot: [6,12] [===========================================>-------------------------------------------] 50% est: 6s 
 plot: [7,1] [============================================>-------------------------------------------] 51% est: 6s 
 plot: [7,2] [============================================>-------------------------------------------] 51% est: 6s 
 plot: [7,3] [=============================================>------------------------------------------] 52% est: 6s 
 plot: [7,4] [=============================================>------------------------------------------] 53% est: 6s 
 plot: [7,5] [==============================================>-----------------------------------------] 53% est: 6s 
 plot: [7,6] [===============================================>----------------------------------------] 54% est: 6s 
 plot: [7,7] [===============================================>----------------------------------------] 55% est: 6s 
 plot: [7,8] [================================================>---------------------------------------] 56% est: 6s 
 plot: [7,9] [=================================================>--------------------------------------] 56% est: 6s 
 plot: [7,10] [=================================================>-------------------------------------] 57% est: 5s 
 plot: [7,11] [=================================================>-------------------------------------] 58% est: 5s 
 plot: [7,12] [==================================================>------------------------------------] 58% est: 5s 
 plot: [8,1] [===================================================>------------------------------------] 59% est: 5s 
 plot: [8,2] [====================================================>-----------------------------------] 60% est: 5s 
 plot: [8,3] [====================================================>-----------------------------------] 60% est: 5s 
 plot: [8,4] [=====================================================>----------------------------------] 61% est: 5s 
 plot: [8,5] [=====================================================>----------------------------------] 62% est: 5s 
 plot: [8,6] [======================================================>---------------------------------] 62% est: 5s 
 plot: [8,7] [=======================================================>--------------------------------] 63% est: 5s 
 plot: [8,8] [=======================================================>--------------------------------] 64% est: 5s 
 plot: [8,9] [========================================================>-------------------------------] 65% est: 4s 
 plot: [8,10] [========================================================>------------------------------] 65% est: 4s 
 plot: [8,11] [========================================================>------------------------------] 66% est: 4s 
 plot: [8,12] [=========================================================>-----------------------------] 67% est: 4s 
 plot: [9,1] [==========================================================>-----------------------------] 67% est: 4s 
 plot: [9,2] [===========================================================>----------------------------] 68% est: 4s 
 plot: [9,3] [===========================================================>----------------------------] 69% est: 4s 
 plot: [9,4] [============================================================>---------------------------] 69% est: 4s 
 plot: [9,5] [=============================================================>--------------------------] 70% est: 4s 
 plot: [9,6] [=============================================================>--------------------------] 71% est: 4s 
 plot: [9,7] [==============================================================>-------------------------] 72% est: 4s 
 plot: [9,8] [===============================================================>------------------------] 72% est: 4s 
 plot: [9,9] [===============================================================>------------------------] 73% est: 3s 
 plot: [9,10] [===============================================================>-----------------------] 74% est: 3s 
 plot: [9,11] [================================================================>----------------------] 74% est: 3s 
 plot: [9,12] [================================================================>----------------------] 75% est: 3s 
 plot: [10,1] [=================================================================>---------------------] 76% est: 3s 
 plot: [10,2] [=================================================================>---------------------] 76% est: 3s 
 plot: [10,3] [==================================================================>--------------------] 77% est: 3s 
 plot: [10,4] [===================================================================>-------------------] 78% est: 3s 
 plot: [10,5] [===================================================================>-------------------] 78% est: 3s 
 plot: [10,6] [====================================================================>------------------] 79% est: 3s 
 plot: [10,7] [====================================================================>------------------] 80% est: 3s 
 plot: [10,8] [=====================================================================>-----------------] 81% est: 2s 
 plot: [10,9] [======================================================================>----------------] 81% est: 2s 
 plot: [10,10] [=====================================================================>----------------] 82% est: 2s 
 plot: [10,11] [======================================================================>---------------] 83% est: 2s 
 plot: [10,12] [=======================================================================>--------------] 83% est: 2s 
 plot: [11,1] [========================================================================>--------------] 84% est: 2s 
 plot: [11,2] [=========================================================================>-------------] 85% est: 2s 
 plot: [11,3] [=========================================================================>-------------] 85% est: 2s 
 plot: [11,4] [==========================================================================>------------] 86% est: 2s 
 plot: [11,5] [===========================================================================>-----------] 87% est: 2s 
 plot: [11,6] [===========================================================================>-----------] 88% est: 2s 
 plot: [11,7] [============================================================================>----------] 88% est: 2s 
 plot: [11,8] [============================================================================>----------] 89% est: 1s 
 plot: [11,9] [=============================================================================>---------] 90% est: 1s 
 plot: [11,10] [=============================================================================>--------] 90% est: 1s 
 plot: [11,11] [=============================================================================>--------] 91% est: 1s 
 plot: [11,12] [==============================================================================>-------] 92% est: 1s 
 plot: [12,1] [===============================================================================>-------] 92% est: 1s 
 plot: [12,2] [================================================================================>------] 93% est: 1s 
 plot: [12,3] [=================================================================================>-----] 94% est: 1s 
 plot: [12,4] [=================================================================================>-----] 94% est: 1s 
 plot: [12,5] [==================================================================================>----] 95% est: 1s 
 plot: [12,6] [==================================================================================>----] 96% est: 1s 
 plot: [12,7] [===================================================================================>---] 97% est: 0s 
 plot: [12,8] [====================================================================================>--] 97% est: 0s 
 plot: [12,9] [====================================================================================>--] 98% est: 0s 
 plot: [12,10] [====================================================================================>-] 99% est: 0s 
 plot: [12,11] [====================================================================================>-] 99% est: 0s 
 plot: [12,12] [======================================================================================]100% est: 0s 
                                                                                                                    
ggsave(plot = stable.ggp.plt.1,  path = "~/plots/paper1/figures/fig_2/supplemental_figs/", filename = "figs4c.png", width = 8, height = 5)

 plot: [1,1] [>---------------------------------------------------------------------------------------]  1% est: 0s 
 plot: [1,2] [>---------------------------------------------------------------------------------------]  1% est: 7s 
 plot: [1,3] [=>--------------------------------------------------------------------------------------]  2% est: 9s 
 plot: [1,4] [=>--------------------------------------------------------------------------------------]  3% est:11s 
 plot: [1,5] [==>-------------------------------------------------------------------------------------]  3% est:12s 
 plot: [1,6] [===>------------------------------------------------------------------------------------]  4% est:12s 
 plot: [1,7] [===>------------------------------------------------------------------------------------]  5% est:12s 
 plot: [1,8] [====>-----------------------------------------------------------------------------------]  6% est:12s 
 plot: [1,9] [=====>----------------------------------------------------------------------------------]  6% est:12s 
 plot: [1,10] [=====>---------------------------------------------------------------------------------]  7% est:12s 
 plot: [1,11] [======>--------------------------------------------------------------------------------]  8% est:12s 
 plot: [1,12] [======>--------------------------------------------------------------------------------]  8% est:12s 
 plot: [2,1] [=======>--------------------------------------------------------------------------------]  9% est:12s 
 plot: [2,2] [========>-------------------------------------------------------------------------------] 10% est:11s 
 plot: [2,3] [========>-------------------------------------------------------------------------------] 10% est:11s 
 plot: [2,4] [=========>------------------------------------------------------------------------------] 11% est:11s 
 plot: [2,5] [=========>------------------------------------------------------------------------------] 12% est:11s 
 plot: [2,6] [==========>-----------------------------------------------------------------------------] 12% est:11s 
 plot: [2,7] [===========>----------------------------------------------------------------------------] 13% est:11s 
 plot: [2,8] [===========>----------------------------------------------------------------------------] 14% est:11s 
 plot: [2,9] [============>---------------------------------------------------------------------------] 15% est:11s 
 plot: [2,10] [============>--------------------------------------------------------------------------] 15% est:11s 
 plot: [2,11] [=============>-------------------------------------------------------------------------] 16% est:11s 
 plot: [2,12] [=============>-------------------------------------------------------------------------] 17% est:11s 
 plot: [3,1] [==============>-------------------------------------------------------------------------] 17% est:11s 
 plot: [3,2] [===============>------------------------------------------------------------------------] 18% est:11s 
 plot: [3,3] [===============>------------------------------------------------------------------------] 19% est:11s 
 plot: [3,4] [================>-----------------------------------------------------------------------] 19% est:11s 
 plot: [3,5] [=================>----------------------------------------------------------------------] 20% est:10s 
 plot: [3,6] [=================>----------------------------------------------------------------------] 21% est:10s 
 plot: [3,7] [==================>---------------------------------------------------------------------] 22% est:10s 
 plot: [3,8] [===================>--------------------------------------------------------------------] 22% est:10s 
 plot: [3,9] [===================>--------------------------------------------------------------------] 23% est:10s 
 plot: [3,10] [====================>------------------------------------------------------------------] 24% est:10s 
 plot: [3,11] [====================>------------------------------------------------------------------] 24% est:10s 
 plot: [3,12] [=====================>-----------------------------------------------------------------] 25% est:10s 
 plot: [4,1] [======================>-----------------------------------------------------------------] 26% est:10s 
 plot: [4,2] [======================>-----------------------------------------------------------------] 26% est:10s 
 plot: [4,3] [=======================>----------------------------------------------------------------] 27% est:10s 
 plot: [4,4] [=======================>----------------------------------------------------------------] 28% est: 9s 
 plot: [4,5] [========================>---------------------------------------------------------------] 28% est: 9s 
 plot: [4,6] [=========================>--------------------------------------------------------------] 29% est: 9s 
 plot: [4,7] [=========================>--------------------------------------------------------------] 30% est: 9s 
 plot: [4,8] [==========================>-------------------------------------------------------------] 31% est: 9s 
 plot: [4,9] [===========================>------------------------------------------------------------] 31% est: 9s 
 plot: [4,10] [===========================>-----------------------------------------------------------] 32% est: 9s 
 plot: [4,11] [===========================>-----------------------------------------------------------] 33% est: 9s 
 plot: [4,12] [============================>----------------------------------------------------------] 33% est: 9s 
 plot: [5,1] [=============================>----------------------------------------------------------] 34% est: 9s 
 plot: [5,2] [==============================>---------------------------------------------------------] 35% est: 9s 
 plot: [5,3] [==============================>---------------------------------------------------------] 35% est: 8s 
 plot: [5,4] [===============================>--------------------------------------------------------] 36% est: 8s 
 plot: [5,5] [===============================>--------------------------------------------------------] 37% est: 8s 
 plot: [5,6] [================================>-------------------------------------------------------] 38% est: 8s 
 plot: [5,7] [=================================>------------------------------------------------------] 38% est: 8s 
 plot: [5,8] [=================================>------------------------------------------------------] 39% est: 8s 
 plot: [5,9] [==================================>-----------------------------------------------------] 40% est: 8s 
 plot: [5,10] [==================================>----------------------------------------------------] 40% est: 8s 
 plot: [5,11] [===================================>---------------------------------------------------] 41% est: 8s 
 plot: [5,12] [===================================>---------------------------------------------------] 42% est: 8s 
 plot: [6,1] [====================================>---------------------------------------------------] 42% est: 8s 
 plot: [6,2] [=====================================>--------------------------------------------------] 43% est: 8s 
 plot: [6,3] [=====================================>--------------------------------------------------] 44% est: 7s 
 plot: [6,4] [======================================>-------------------------------------------------] 44% est: 7s 
 plot: [6,5] [=======================================>------------------------------------------------] 45% est: 7s 
 plot: [6,6] [=======================================>------------------------------------------------] 46% est: 7s 
 plot: [6,7] [========================================>-----------------------------------------------] 47% est: 7s 
 plot: [6,8] [=========================================>----------------------------------------------] 47% est: 7s 
 plot: [6,9] [=========================================>----------------------------------------------] 48% est: 7s 
 plot: [6,10] [=========================================>---------------------------------------------] 49% est: 7s 
 plot: [6,11] [==========================================>--------------------------------------------] 49% est: 7s 
 plot: [6,12] [===========================================>-------------------------------------------] 50% est: 7s 
 plot: [7,1] [============================================>-------------------------------------------] 51% est: 7s 
 plot: [7,2] [============================================>-------------------------------------------] 51% est: 6s 
 plot: [7,3] [=============================================>------------------------------------------] 52% est: 6s 
 plot: [7,4] [=============================================>------------------------------------------] 53% est: 6s 
 plot: [7,5] [==============================================>-----------------------------------------] 53% est: 6s 
 plot: [7,6] [===============================================>----------------------------------------] 54% est: 6s 
 plot: [7,7] [===============================================>----------------------------------------] 55% est: 6s 
 plot: [7,8] [================================================>---------------------------------------] 56% est: 6s 
 plot: [7,9] [=================================================>--------------------------------------] 56% est: 6s 
 plot: [7,10] [=================================================>-------------------------------------] 57% est: 6s 
 plot: [7,11] [=================================================>-------------------------------------] 58% est: 6s 
 plot: [7,12] [==================================================>------------------------------------] 58% est: 6s 
 plot: [8,1] [===================================================>------------------------------------] 59% est: 5s 
 plot: [8,2] [====================================================>-----------------------------------] 60% est: 5s 
 plot: [8,3] [====================================================>-----------------------------------] 60% est: 5s 
 plot: [8,4] [=====================================================>----------------------------------] 61% est: 5s 
 plot: [8,5] [=====================================================>----------------------------------] 62% est: 5s 
 plot: [8,6] [======================================================>---------------------------------] 62% est: 5s 
 plot: [8,7] [=======================================================>--------------------------------] 63% est: 5s 
 plot: [8,8] [=======================================================>--------------------------------] 64% est: 5s 
 plot: [8,9] [========================================================>-------------------------------] 65% est: 5s 
 plot: [8,10] [========================================================>------------------------------] 65% est: 5s 
 plot: [8,11] [========================================================>------------------------------] 66% est: 5s 
 plot: [8,12] [=========================================================>-----------------------------] 67% est: 4s 
 plot: [9,1] [==========================================================>-----------------------------] 67% est: 4s 
 plot: [9,2] [===========================================================>----------------------------] 68% est: 4s 
 plot: [9,3] [===========================================================>----------------------------] 69% est: 4s 
 plot: [9,4] [============================================================>---------------------------] 69% est: 4s 
 plot: [9,5] [=============================================================>--------------------------] 70% est: 4s 
 plot: [9,6] [=============================================================>--------------------------] 71% est: 4s 
 plot: [9,7] [==============================================================>-------------------------] 72% est: 4s 
 plot: [9,8] [===============================================================>------------------------] 72% est: 4s 
 plot: [9,9] [===============================================================>------------------------] 73% est: 4s 
 plot: [9,10] [===============================================================>-----------------------] 74% est: 3s 
 plot: [9,11] [================================================================>----------------------] 74% est: 3s 
 plot: [9,12] [================================================================>----------------------] 75% est: 3s 
 plot: [10,1] [=================================================================>---------------------] 76% est: 3s 
 plot: [10,2] [=================================================================>---------------------] 76% est: 3s 
 plot: [10,3] [==================================================================>--------------------] 77% est: 3s 
 plot: [10,4] [===================================================================>-------------------] 78% est: 3s 
 plot: [10,5] [===================================================================>-------------------] 78% est: 3s 
 plot: [10,6] [====================================================================>------------------] 79% est: 3s 
 plot: [10,7] [====================================================================>------------------] 80% est: 3s 
 plot: [10,8] [=====================================================================>-----------------] 81% est: 3s 
 plot: [10,9] [======================================================================>----------------] 81% est: 2s 
 plot: [10,10] [=====================================================================>----------------] 82% est: 2s 
 plot: [10,11] [======================================================================>---------------] 83% est: 2s 
 plot: [10,12] [=======================================================================>--------------] 83% est: 2s 
 plot: [11,1] [========================================================================>--------------] 84% est: 2s 
 plot: [11,2] [=========================================================================>-------------] 85% est: 2s 
 plot: [11,3] [=========================================================================>-------------] 85% est: 2s 
 plot: [11,4] [==========================================================================>------------] 86% est: 2s 
 plot: [11,5] [===========================================================================>-----------] 87% est: 2s 
 plot: [11,6] [===========================================================================>-----------] 88% est: 2s 
 plot: [11,7] [============================================================================>----------] 88% est: 2s 
 plot: [11,8] [============================================================================>----------] 89% est: 1s 
 plot: [11,9] [=============================================================================>---------] 90% est: 1s 
 plot: [11,10] [=============================================================================>--------] 90% est: 1s 
 plot: [11,11] [=============================================================================>--------] 91% est: 1s 
 plot: [11,12] [==============================================================================>-------] 92% est: 1s 
 plot: [12,1] [===============================================================================>-------] 92% est: 1s 
 plot: [12,2] [================================================================================>------] 93% est: 1s 
 plot: [12,3] [=================================================================================>-----] 94% est: 1s 
 plot: [12,4] [=================================================================================>-----] 94% est: 1s 
 plot: [12,5] [==================================================================================>----] 95% est: 1s 
 plot: [12,6] [==================================================================================>----] 96% est: 1s 
 plot: [12,7] [===================================================================================>---] 97% est: 0s 
 plot: [12,8] [====================================================================================>--] 97% est: 0s 
 plot: [12,9] [====================================================================================>--] 98% est: 0s 
 plot: [12,10] [====================================================================================>-] 99% est: 0s 
 plot: [12,11] [====================================================================================>-] 99% est: 0s 
 plot: [12,12] [======================================================================================]100% est: 0s 
                                                                                                                    
LS0tCnRpdGxlOiAiQ29ycmVsYXRpb25zIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KEdHYWxseSkKYGBgCgplc3RpbWF0ZWQgcGFyYW1ldGVyIHZhbHVlcwpgYGB7cn0KYWljLmRmIDwtIHJlYWRfY3N2KCJ+L3Bsb3RzL2FsbF9kYXRhL2FpYy5jc3YiKQpgYGAKCiNhZGQgdGhlIHJlcGxpY2F0ZSBpbmZvIApgYGB7cn0KCmFpYy5kZiA8LSBhaWMuZGYgJT4lIAogIG11dGF0ZShleHAuZmllbGQgPSBwYXN0ZTAoc3RyX3NwbGl0KGNlbGwuaWQsICJfIiwgc2ltcGxpZnkgPSBUKVssMl0sIl8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX3NwbGl0KGNlbGwuaWQsICJfIiwgc2ltcGxpZnkgPSBUKVssM10pLAogICAgY29sb255ID0gY2FzZV93aGVuKGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3MzIiwgIjIwbWluX3M0IikgfiAiUmVwbGljYXRlIDEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M1IiwgIjIwbWluX3M2IikgfiAiUmVwbGljYXRlIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwLmZpZWxkICVpbiUgYygiMjBtaW5fczciLCAiMjBtaW5fczgiICwgIjIwbWluX3M5IikgfiAiUmVwbGljYXRlIDMiKSkKCmFpYy5kZiA8LSBhaWMuZGYgJT4lIAogIG11dGF0ZShjb2xvbnkgPSBpZmVsc2UoZGVncm9uID09ICJzdGFibGUiICYgcmVkID09ICJwdXAxLXJmcCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZV93aGVuKGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M0IiwgIjIwbWluX3M1IikgfiAiUmVwbGljYXRlIDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M2IiwgIjIwbWluX3M3IikgfiAiUmVwbGljYXRlIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M4IiwgIjIwbWluX3M5IikgfiAiUmVwbGljYXRlIDMiKSwgY29sb255KSkgCiAgIyBmaWx0ZXIodmFsdWUgPCAwLjA1KQogIApgYGAKCkNlbGx1bGFyIGF0dHJpYnV0ZXMKYGBge3J9CnB1cDEuY2VsbC5hdHRyIDwtIHJlYWRfY3N2KCJ+L3Bsb3RzL2FsbF9kYXRhL2FsbF9wdXAxX2NlbGxfYXR0ci5jc3YiKQpgYGAKCiNwdXAxLVJGUCBiYWNrZ3JvdW5kCmBgYHtyfQpwdXAxLmNlbGwuYXR0ciA8LSBwdXAxLmNlbGwuYXR0ciAlPiUgCiAgbXV0YXRlKGV4cC5maWVsZCA9IHBhc3RlMChzdHJfc3BsaXQoY2VsbC5pZCwgIl8iLCBzaW1wbGlmeSA9IFQpWywyXSwiXyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJfc3BsaXQoY2VsbC5pZCwgIl8iLCBzaW1wbGlmeSA9IFQpWywzXSksCiAgICBjb2xvbnkgPSBjYXNlX3doZW4oZXhwLmZpZWxkICVpbiUgYygiMjBtaW5fczMiLCAiMjBtaW5fczQiKSB+ICJSZXBsaWNhdGUgMSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwLmZpZWxkICVpbiUgYygiMjBtaW5fczUiLCAiMjBtaW5fczYiKSB+ICJSZXBsaWNhdGUgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHAuZmllbGQgJWluJSBjKCIyMG1pbl9zNyIsICIyMG1pbl9zOCIgLCAiMjBtaW5fczkiKSB+ICJSZXBsaWNhdGUgMyIpKQoKcHVwMS5jZWxsLmF0dHIgPC0gcHVwMS5jZWxsLmF0dHIgJT4lIAogIG11dGF0ZShjb2xvbnkgPSBpZmVsc2UoZGVncm9uID09ICJzdGFibGUiICYgcmVkID09ICJwdXAxLXJmcCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZV93aGVuKGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M0IiwgIjIwbWluX3M1IikgfiAiUmVwbGljYXRlIDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M2IiwgIjIwbWluX3M3IikgfiAiUmVwbGljYXRlIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M4IiwgIjIwbWluX3M5IikgfiAiUmVwbGljYXRlIDMiKSwgY29sb255KSkgCiAgCmBgYAoKYGBge3J9CiNyZW1vdmluZyB0aGUgNDBtaW4gYW5kIDYwbWluIGV4cGVyaW1lbnRzIGZyb20gdGhlIHN0YWJsZSBnZnAgZXhwZXJpbWVudHMKcHVwMS5jZWxsLmF0dHIgPC0gcHVwMS5jZWxsLmF0dHIgJT4lCiAgbXV0YXRlKGV4cCA9IHN0cl9zcGxpdChleHAuZmllbGQsICJfIiwgc2ltcGxpZnkgPSBUKVssMV0pICU+JSAKICBmaWx0ZXIoZXhwID09ICIyMG1pbiIpCmBgYAoKCmBgYHtyfQpwdXAxLmNlbGwuYXR0ciA8LSByZWFkX2Nzdigifi9wbG90cy9wdXAxLXJmcC1nZnAtZGVjYXkvNC0yOC0yMS04aHJHRlAvZGF0YS9nZnBfc3RhYmxlX2ZpbHRlcmVkLmNzdiIpICU+JSAKICBmaWx0ZXIoaW1hZ2Uubm8gPT0gMSkgJT4lIAogIGRwbHlyOjpzZWxlY3QoY2VsbC5pZCwgZ2ZwU3VtQmdBRnN1YikgJT4lIAogIG11dGF0ZShjZWxsLmlkID0gcGFzdGUwKGNlbGwuaWQsIl8iLCJzdGFibGVfcHVwMS1yZnBfbm9uZSIpKSAlPiUgCiAgZHBseXI6OnJlbmFtZSgiZ2ZwLnN1bS5iZy5hZi5zdWIiID0gImdmcFN1bUJnQUZzdWIiKSAlPiUgCiAgbGVmdF9qb2luKHB1cDEuY2VsbC5hdHRyICU+JSAKICAgICAgICAgICAgICBmaWx0ZXIoZGVncm9uID09ICJzdGFibGUiKSAlPiUgCiAgICAgICAgICAgICAgZHBseXI6OnNlbGVjdCgtZ2ZwLnN1bS5iZy5hZi5zdWIpLC4sIGJ5ID0gImNlbGwuaWQiKSAlPiUgCiAgYmluZF9yb3dzKHB1cDEuY2VsbC5hdHRyICU+JSAKICAgICAgICAgICAgICBmaWx0ZXIoZGVncm9uICE9ICJzdGFibGUiKSwuKQpgYGAKCmBgYHtyfQptdWx0aXBsZS5wdXAxIDwtIHB1cDEuY2VsbC5hdHRyICU+JSAKICBtdXRhdGUoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwLCBkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSkgLCAKICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpKSAlPiUgCiAgZmlsdGVyKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPiAwKSAlPiUgCiAgZ3JvdXBfYnkoY2VsbC5pZCkgJT4lIAogIHRhbGx5KCkgJT4lIAogIGZpbHRlcihuPjEpCgpwdXAxLmNlbGwuYXR0cjwtIHB1cDEuY2VsbC5hdHRyICU+JSAKICBncm91cF9ieShjZWxsLmlkKSAlPiUgCiAgbXV0YXRlKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoY2VsbC5pZCAlaW4lIG11bHRpcGxlLnB1cDEkY2VsbC5pZCAsIG1lYW4ocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgKSkgJT4lIAogICAgZGlzdGluY3QoY2VsbC5pZCwgLmtlZXBfYWxsID0gVFJVRSkgCmBgYAoKI3Byb3RlYXNvbWUgaW5oaWJpdGlvbiBleHBlcmltZW50cwpgYGB7cn0KcHJvdEluaGkuYXR0ciA8LSByZWFkX2Nzdigifi9wbG90cy9hbGxfZGF0YS9hbGxfbWcxMzVfYXR0ci5jc3YiKSAlPiUgCiAgcmVuYW1lKCJjZWxsLmlkIiA9ICJ1bmlxdWUudHJhY2tJRCIpICU+JSAKICBmaWx0ZXIodGltZXBvaW50ID09IDEpICU+JSAKICBtdXRhdGUoY2VsbC5pZCA9IHBhc3RlMChjZWxsLmlkICwiXyIsZGVncm9uLCJfIixyZWQsIl8iLHRyZWF0bWVudCkpICU+JSAKICBtdXRhdGUoZXhwLmZpZWxkID0gcGFzdGUwKHN0cl9zcGxpdChjZWxsLmlkLCAiXyIsIHNpbXBsaWZ5ID0gVClbLDJdLCJfIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cl9zcGxpdChjZWxsLmlkLCAiXyIsIHNpbXBsaWZ5ID0gVClbLDNdKSwKICAgIGNvbG9ueSA9IGNhc2Vfd2hlbihleHAuZmllbGQgJWluJSBjKCIyMG1pbl9zMyIsICIyMG1pbl9zNCIpIH4gIlJlcGxpY2F0ZSAxIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHAuZmllbGQgJWluJSBjKCIyMG1pbl9zNSIsICIyMG1pbl9zNiIpIH4gIlJlcGxpY2F0ZSAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cC5maWVsZCAlaW4lIGMoIjIwbWluX3M3IiwgIjIwbWluX3M4IiAsICIyMG1pbl9zOSIpIH4gIlJlcGxpY2F0ZSAzIikpCgptdWx0aXBsZS5wcm9JbmggPC0gcHJvdEluaGkuYXR0ciAlPiUgCiAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiAgICAgICAgIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAgLCByZnAubWVhbi5iZy5zdWIucHVuY3RhKSkgJT4lIAogIGZpbHRlcihyZnAubWVhbi5iZy5zdWIucHVuY3RhID4gMCkgJT4lIAogIGdyb3VwX2J5KGNlbGwuaWQpICU+JSAKICB0YWxseSgpICU+JSAKICBmaWx0ZXIobj4xKQoKcHJvdEluaGkuYXR0ciA8LSBwcm90SW5oaS5hdHRyICU+JSAKICBncm91cF9ieShjZWxsLmlkKSAlPiUgCiAgbXV0YXRlKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoY2VsbC5pZCAlaW4lIG11bHRpcGxlLnByb0luaCRjZWxsLmlkICwgbWVhbihyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksCiAgICAgICAgIHJmcC5zdW0uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShjZWxsLmlkICVpbiUgbXVsdGlwbGUucHJvSW5oJGNlbGwuaWQsIHN1bShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgcmZwLnN1bS5iZy5zdWIucHVuY3RhKSkgJT4lIAogICAgZGlzdGluY3QoY2VsbC5pZCwgLmtlZXBfYWxsID0gVFJVRSkgIAogIAoKYGBgCgpgYGB7cn0KcHVwMS5wcm9JbmhpLmF0dHIgPC0gcHVwMS5jZWxsLmF0dHIgJT4lIAogIGJpbmRfcm93cyguLHByb3RJbmhpLmF0dHIgJT4lIAogICAgICAgICAgICAgIGRwbHlyOjpzZWxlY3QoLXRpbWUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLXRpbWVwb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pbWFnZS5ubywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbG4uZ2ZwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1sbi5nZnAuZGlmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLXRyYWNrSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZ2ZwLmludGVuc2l0eS5jZW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZ2ZwLmludC5tZWFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLWdmcC5pbnQubWVkaWFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtZ2ZwLmludC5zdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC1uby5vZi50cmlhbmdsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC1maWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLXRpbWUuZGlmLmdmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlYWwudGltZS5nZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC1zYW1wbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC1hdmcuZ2ZwLmJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtTWluX2dmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLWdmcC5tZWFuLmJnLnN1YiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLXZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtdDgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtdDk1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAtdGhyZXNob2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtdGhyZXNob2xkXzk1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAtZ2ZwLm1lYW4uYmcuYWYuc3ViLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtdGhyZXNob2xkXzgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAtTWVhbl9nZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLWV4cGVyaW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC1nZnAuc3VtLmJnLnN1YikpCmBgYAoKI3NlbGVjdGluZyB0aGUgZHkgdmFsdWVzIGZyb20gdGhlIDItcGFyYW1ldGVyIG1hdHVyYXRpb24gbW9kZWwKYGBge3J9CiMgZHkucHVwMS5yZXAxLmFsbCA8LSBhaWMuZGYgJT4lIAojICAgZmlsdGVyKHJlZCA9PSAicHVwMS1yZnAiLCB0cmVhdG1lbnQgPT0gIm5vbmUiLCBkZWdyb24gJWluJSBjKCJjbG4yLjMiLCJtT0RDLjIiLCAic3RhYmxlLjIiKSApICU+JSAKIyAgIGZpbHRlcihpZmVsc2UoZGVncm9uID09ICJzdGFibGUuMiIsIGR5IDwgMC4xLCBkeSA8IDAuNSkpICU+JSAKIyAgIGdyb3VwX2J5KGNlbGwuaWQpICU+JSAKIyAgICMgZmlsdGVyKG1vZGVsID09ICJleHBvbmVudGlhbCIpIAojICAgZmlsdGVyKGlmZWxzZShkZWdyb24gPT0gIm1PREMuMiIsIG1vZGVsID09ICJkeS5kbSIsIG1vZGVsID09ICJleHBvbmVudGlhbCIpKSAlPiUKIyAgIG11dGF0ZShkbSA9IGlmZWxzZShpcy5uYShkbSksIEluZiwgZG0pKSAlPiUKIyAgIGZpbHRlciggZG0gPiAwLjAwMDAxKQojIAojIGR5LnB1cDEucmVwMSA8LSBhaWMuZGYgJT4lIAojICAgZmlsdGVyKHJlZCA9PSAicHVwMS1yZnAiLCB0cmVhdG1lbnQgPT0gIm5vbmUiLCBkZWdyb24gJWluJSBjKCJjbG4yLjMiLCJtT0RDLjIiLCAic3RhYmxlLjIiKSApICU+JSAKIyAgIGZpbHRlcihpZmVsc2UoZGVncm9uID09ICJzdGFibGUuMiIsIGR5IDwgMC4xLCBkeSA8IDAuNSkpICU+JSAKIyAgIGdyb3VwX2J5KGNlbGwuaWQpICU+JSAKIyAgIGZpbHRlcihtb2RlbCA9PSAiZXhwb25lbnRpYWwiKSAKIyAgICMgZmlsdGVyKGlmZWxzZShkZWdyb24gPT0gIm1PREMuMiIsIG1vZGVsID09ICJkeS5kbSIsIG1vZGVsID09ICJleHBvbmVudGlhbCIpKSAlPiUKIyAgICMgbXV0YXRlKGRtID0gaWZlbHNlKGlzLm5hKGRtKSwgSW5mLCBkbSkpICU+JQojICAgIyBmaWx0ZXIoIGRtID4gMC4wMDAwMSkKCiNvbmx5IGR5LmRtCmR5LnB1cDEucmVwMS5tYXQgPC0gYWljLmRmICU+JSAKICBmaWx0ZXIocmVkID09ICJwdXAxLXJmcCIgKSAlPiUgCiAgZmlsdGVyKGlmZWxzZShkZWdyb24gJWluJSBjKCAic3RhYmxlIiwic3RhYmxlLjMiLCJzdGFibGUuMiIpLCBkeSA8IDAuMSwgZHkgPCAwLjUpKSAlPiUgCiAgZ3JvdXBfYnkoY2VsbC5pZCkgJT4lIAogIGZpbHRlcihtb2RlbCA9PSAiZHkuZG0iKSAlPiUgCiAgbXV0YXRlKGRtID0gaWZlbHNlKGlzLm5hKGRtKSwgSW5mLCBkbSkpICU+JQogIGZpbHRlciggZG0gPiAwLjAwMDAxKQpgYGAKCiN3aXRoIGV4cG9uZW50aWFsIG1vZGVsIGZvciBhbGwgdGhlIEdGUHMKYGBge3J9CmZpZzIuZGYgPC0gZHkucHVwMS5yZXAxICU+JSAKICBsZWZ0X2pvaW4oLixwdXAxLmNlbGwuYXR0ciAlPiUKICAgICAgICAgICAgICBmaWx0ZXIocmVkID09ICJwdXAxLXJmcCIsIHRyZWF0bWVudCA9PSAibm9uZSIsIGRlZ3JvbiAlaW4lIGMoImNsbjIuMyIsIm1PREMuMiIsICJzdGFibGUuMiIpKSwgYnkgPSBjKCJjZWxsLmlkIiwidHJlYXRtZW50IiwiZGVncm9uIiwicmVkIiwiY29sb255IiwiZXhwLmZpZWxkIikpCgptdWx0aXBsZS5wdXAxIDwtIGZpZzIuZGYgJT4lIAogIG11dGF0ZShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAsIGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSAsIAogICAgICAgICByZnAubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwICwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSkpICU+JSAKICBmaWx0ZXIocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JSBncm91cF9ieShjZWxsLmlkKSAlPiUgdGFsbHkoKSAlPiUgZmlsdGVyKG4+MSkKCmZpZzIuZGYgPC0gZmlnMi5kZiAlPiUgCiAgZ3JvdXBfYnkoY2VsbC5pZCkgJT4lIAogIG11dGF0ZShyZnAubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGNlbGwuaWQgJWluJSBtdWx0aXBsZS5wdXAxJGNlbGwuaWQgLCBtZWFuKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLCByZnAubWVhbi5iZy5zdWIucHVuY3RhICkpICU+JSAKICAgIGRpc3RpbmN0KGNlbGwuaWQsIC5rZWVwX2FsbCA9IFRSVUUpIApgYGAKCiN3aXRoIGR5LmRtIG1vZGVsIGZvciBtT0RDIGFuZCBleHBvbmVudGlhbCBmb3IgY2xuMiBhbmQgY2Fub25pY2FsIEdGUApgYGB7cn0KZmlnMi5kZi5hbGwgPC0gZHkucHVwMS5yZXAxLmFsbCAlPiUgCiAgbGVmdF9qb2luKC4scHVwMS5jZWxsLmF0dHIgJT4lCiAgICAgICAgICAgICAgZmlsdGVyKHJlZCA9PSAicHVwMS1yZnAiLCB0cmVhdG1lbnQgPT0gIm5vbmUiLCBkZWdyb24gJWluJSBjKCJjbG4yLjMiLCJtT0RDLjIiLCAic3RhYmxlLjIiKSksIGJ5ID0gYygiY2VsbC5pZCIsInRyZWF0bWVudCIsImRlZ3JvbiIsInJlZCIsImNvbG9ueSIsImV4cC5maWVsZCIpKQoKbXVsdGlwbGUucHVwMSA8LSBmaWcyLmRmLmFsbCAlPiUgCiAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiAgICAgICAgIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAgLCByZnAubWVhbi5iZy5zdWIucHVuY3RhKSkgJT4lIAogIGZpbHRlcihyZnAubWVhbi5iZy5zdWIucHVuY3RhID4gMCkgJT4lIGdyb3VwX2J5KGNlbGwuaWQpICU+JSB0YWxseSgpICU+JSBmaWx0ZXIobj4xKQoKZmlnMi5kZi5hbGwgPC0gZmlnMi5kZi5hbGwgJT4lIAogIGdyb3VwX2J5KGNlbGwuaWQpICU+JSAKICBtdXRhdGUocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShjZWxsLmlkICVpbiUgbXVsdGlwbGUucHVwMSRjZWxsLmlkICwgbWVhbihyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSApKSAlPiUgCiAgICBkaXN0aW5jdChjZWxsLmlkLCAua2VlcF9hbGwgPSBUUlVFKSAKYGBgCgojd2l0aCBkeS5kbSBtb2RlbCBmb3IgYWxsIHRoZSBleHAKYGBge3J9CmZpZzIuZGYubWF0IDwtIGR5LnB1cDEucmVwMS5tYXQgJT4lIAogIGxlZnRfam9pbiguLHB1cDEucHJvSW5oaS5hdHRyICU+JQogICAgICAgICAgICAgIGZpbHRlcihyZWQgPT0gInB1cDEtcmZwIiksIGJ5ID0gYygiY2VsbC5pZCIsInRyZWF0bWVudCIsImRlZ3JvbiIsInJlZCIsImNvbG9ueSIsImV4cC5maWVsZCIpKSAlPiUgCiAgbXV0YXRlKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpKSAlPiUgCiAgZmlsdGVyKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPiAwKQoKYGBgCgojZmlsdGVyIGZvciBTU0UgPCAwLjA1CmBgYHtyfQpmaWcyLmRmLjIgPC0gZmlnMi5kZiAlPiUgZmlsdGVyKHZhbHVlPCAwLjA1KQpmaWcyLmRmLmFsbC4yIDwtIGZpZzIuZGYuYWxsICU+JSBmaWx0ZXIodmFsdWU8IDAuMDUpCgpmaWcyLmRmLm1hdCA8LSBmaWcyLmRmLm1hdCAlPiUgZmlsdGVyKHZhbHVlPCAwLjA1KQpgYGAKCgojY3VzdG9tZWQgZ2dwYWlycyBmdW5jdGlvbiAKYGBge3J9CgpteV9mbiA8LSBmdW5jdGlvbihkYXRhLCBtYXBwaW5nLCAuLi4pewogIHAgPC0gZ2dwbG90KGRhdGEgPSBkYXRhLCBtYXBwaW5nID0gbWFwcGluZykgKyAKICAgIGdncG9pbnRkZW5zaXR5OjpnZW9tX3BvaW50ZGVuc2l0eShzaXplID0gMC4xKSsKICAgICMgZ2VvbV9wb2ludChzaXplID0gMC4xLCBhbHBoYSA9IDAuMSkgKyAKICAgIGdlb21fc21vb3RoKG1ldGhvZD0ibG0iLCAgY29sb3I9InJlZDQiLCBzZSA9IEZBTFNFLCBsd2QgPSAwLjUpCiAgcAp9CgpnZ3BhaXJzLmN1c3RvbWUgPC0gZnVuY3Rpb24oZGYpewogIGdncGFpcnMucGxvdCA8LSBkZiAlPiUgIAogIG11dGF0ZShjb2xvbnkgPSBjYXNlX3doZW4oY29sb255ID09ICJSZXBsaWNhdGUgMSIgfiAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbnkgPT0gIlJlcGxpY2F0ZSAyIiB+ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ueSA9PSAiUmVwbGljYXRlIDMiIH4gIjMiKSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgc2VsZWN0KGRtLAogICAgIyBjb2xvbnksCiAgICBnZnAubWVhbi5iZy5hZi5zdWIubmV3LCAKICAgICMgZ2ZwLnN1bS5iZy5hZi5zdWIsIAogICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSwgCiAgICAjIHJmcC5zdW0uYmcuc3ViLnB1bmN0YSwKICAgIGRhcGkuc3VtLmJnLnN1Yi5wdW5jdGEsIAogICAgYXJlYSwKICAgICMgdm9sdW1lLAogICAgIyBuby5vZi52b3hlbHMsCiAgICAjIGFyZWEucHVuY3RhLAogICAgZWxpcGVfc2hhcGUsCiAgICAjIGR5LCNyZW1vdmVkIHQuaGFsZiBhbmQgYWRkZWQgZHkKICAgIHQuaGFsZikgJT4lIAogIHJlbmFtZSgiR0ZQIiA9ICJnZnAubWVhbi5iZy5hZi5zdWIubmV3IiwKICAgICAgICAgIyAiR0ZQLnN1bSIgPSAiZ2ZwLnN1bS5iZy5hZi5zdWIiLAogICAgICAgICAiUHVwMS0gdERpbWVyIiA9ICJyZnAubWVhbi5iZy5zdWIucHVuY3RhIiwKICAgICAgICAgIyAicmZwLnN1bSIgPSAicmZwLnN1bS5iZy5zdWIucHVuY3RhIiwKICAgICAgICAgIkRhcGkiID0gImRhcGkuc3VtLmJnLnN1Yi5wdW5jdGEiLAogICAgICAgICAiQXJlYSIgPSAiYXJlYSIsCiAgICAgICAgICMgInZveGVscyIgPSAibm8ub2Yudm94ZWxzIiwKICAgICAgICAgIyAiTnVjbGVhciBTaXplIiA9ICJhcmVhLnB1bmN0YSIsCiAgICAgICAgICJTaGFwZSIgPSAiZWxpcGVfc2hhcGUiLAogICAgICAgICAjICJyYXRlIG9mIGRlY2F5IiA9ICJkeSIsCiAgICAgICAgICJIYWxmLUxpZmUgW21pbi5dIiA9ICJ0LmhhbGYiLAogICAgICAgICAiUmF0ZSBvZiBNYXR1cmF0aW9uIiA9ICJkbSIpICU+JQogICAgICAgICAjICJSZXBsaWNhdGUiID0gImNvbG9ueSIpICU+JSAKICBnZ3BhaXJzKC4sCiAgICAgICAgICAjIGxlZ2VuZCA9IDEsCiAgICAgICAgICBjb2x1bW5zID0gMTo3LAogICAgICAgICAgIyBtYXBwaW5nID0gZ2dwbG90Mjo6YWVzKGNvbG9yID0gUmVwbGljYXRlKSwKICAgICAgICAgIGxvd2VyID0gbGlzdChjb250aW51b3VzID0gbXlfZm4sCiAgICAgICAgICAgICAgICAgICAgICBkaXNjcmV0ZSA9ICJibGFuayIsIAogICAgICAgICAgICAgICAgICAgICAgY29tYm89ImJsYW5rIiksIAogICAgICAgICAgIGRpYWcgPSBsaXN0KGRpc2NyZXRlPSJiYXJEaWFnIiwgCiAgICAgICAgICAgICAgICAgICAgICBjb250aW51b3VzID0gd3JhcCgiZGVuc2l0eURpYWciLCBhbHBoYT0wLjUgKSksCiAgICAgICAgICB1cHBlciA9IGxpc3QoZGlzY3JldGU9IHdyYXAoImJhckRpYWciICwgb3V0bGllci5zaXplID0gMC41KSwKICAgICAgICAgICAgICAgICAgICAgICBjb21ibyA9IHdyYXAoImJveF9ub19mYWNldCIsIG91dGxpZXIuc2l6ZSA9IDAuNSksCiAgICAgICAgICAgICAgICAgICAgICAgY29udGludW91cyA9IHdyYXAoImNvciIsIGRpc3BsYXlfZ3JpZCA9IEZBTFNFLCBzaXplID0gMi41ICwgbWV0aG9kID0gInBlYXJzb24iLCBjb2xvciA9ICJyZWQ0IikpLAogICAgICAgICAgbGFiZWxsZXIgPSBsYWJlbF93cmFwX2dlbih3aWR0aCA9IDIsIG11bHRpX2xpbmUgPSBUUlVFKSwgCiAgICAgICAgICBwcm9wb3J0aW9ucyA9IGMoKSkrCiAgdGhlbWVfYncoKSsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA2KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMzAsIGhqdXN0ID0gMSkpCiAgIyBzY2FsZV9maWxsX2JyZXdlciggcGFsZXR0ZSA9ICJTZXQyIikrCiAgIyBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikrCiAgCiAgcmV0dXJuKGdncGFpcnMucGxvdCkKfQpgYGAKCm1PREMgY29ycmVsYXRpb25zIGJhc2VkIG9uIHRoZSBkbSB2YWx1ZXMKYGBge3J9CiNkbSA8MQpmaWcyLmRmLmFsbCAlPiUgCiAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiAgICAgICAgIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAgLCByZnAubWVhbi5iZy5zdWIucHVuY3RhKSwKICAgICAgICAgZG0gPSBpZmVsc2UoaXMubmEoZG0pLCBJbmYsIGRtKSwKICAgICAgICAgZWxpcGVfc2hhcGUgPSBFbGlwX0IvRWxpcF9DLCAKICAgICAgICAgdC5oYWxmID0gbG9nKDIpL2R5KSAlPiUgCiAgZmlsdGVyKGRlZ3JvbiA9PSAibU9EQy4yIiwKICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDAsIAogICAgICAgICBkbSA8IDEpICU+JSAKICBtdXRhdGUoY29sb255ID0gY2FzZV93aGVuKGNvbG9ueSA9PSAiUmVwbGljYXRlIDEiIH4gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb255ID09ICJSZXBsaWNhdGUgMiIgfiAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbnkgPT0gIlJlcGxpY2F0ZSAzIiB+ICIzIikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHNlbGVjdChjb2xvbnksCiAgICB0LmhhbGYsIGdmcC5tZWFuLmJnLmFmLnN1Yi5uZXcsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEsIGRhcGkuc3VtLmJnLnN1Yi5wdW5jdGEsIGFyZWEsIGVsaXBlX3NoYXBlKSAlPiUKICByZW5hbWUoImdmcC5tIiA9ICJnZnAubWVhbi5iZy5hZi5zdWIubmV3IiwKICAgICAgICAgInB1cDEiID0gInJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEiLAogICAgICAgICAiZGFwaSIgPSAiZGFwaS5zdW0uYmcuc3ViLnB1bmN0YSIpICU+JSAKICBnZ3BhaXJzKC4sbGVnZW5kID0gMSwKICAgICAgICAgIGNvbHVtbnMgPSAxOjcsCiAgICBtYXBwaW5nID0gZ2dwbG90Mjo6YWVzKGNvbG9yID0gY29sb255KSwKICAgICAgICAgbG93ZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKCJzbW9vdGgiLCBzZSA9IEYsIGFscGhhID0gMC41LCBzaXplID0gMC4xKSApLCAKICAgICAgICAgIHVwcGVyID0gbGlzdChjb250aW51b3VzID0gd3JhcCgiY29yIiwgc2l6ZSA9IDIuNSkpKSsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikKCgojZG0gPiAxCmZpZzIuZGYuYWxsICU+JSAKICBtdXRhdGUoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwLCBkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSkgLCAKICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAogICAgICAgICBkbSA9IGlmZWxzZShpcy5uYShkbSksIEluZiwgZG0pLAogICAgICAgICBlbGlwZV9zaGFwZSA9IEVsaXBfQi9FbGlwX0MsIAogICAgICAgICB0LmhhbGYgPSBsb2coMikvZHkpICU+JSAKICBmaWx0ZXIoZGVncm9uID09ICJtT0RDLjIiLAogICAgICAgICByZnAubWVhbi5iZy5zdWIucHVuY3RhID4gMCwgCiAgICAgICAgIGRtID4gMSkgJT4lIAogIG11dGF0ZShjb2xvbnkgPSBjYXNlX3doZW4oY29sb255ID09ICJSZXBsaWNhdGUgMSIgfiAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbnkgPT0gIlJlcGxpY2F0ZSAyIiB+ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ueSA9PSAiUmVwbGljYXRlIDMiIH4gIjMiKSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgc2VsZWN0KGNvbG9ueSwKICAgIHQuaGFsZiwgZ2ZwLm1lYW4uYmcuYWYuc3ViLm5ldywgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSwgZGFwaS5zdW0uYmcuc3ViLnB1bmN0YSwgYXJlYSwgZWxpcGVfc2hhcGUpICU+JQogIHJlbmFtZSgiZ2ZwLm0iID0gImdmcC5tZWFuLmJnLmFmLnN1Yi5uZXciLAogICAgICAgICAicHVwMSIgPSAicmZwLm1lYW4uYmcuc3ViLnB1bmN0YSIsCiAgICAgICAgICJkYXBpIiA9ICJkYXBpLnN1bS5iZy5zdWIucHVuY3RhIikgJT4lIAogIGdncGFpcnMoLixsZWdlbmQgPSAxLAogICAgICAgICAgY29sdW1ucyA9IDE6NywKICAgIG1hcHBpbmcgPSBnZ3Bsb3QyOjphZXMoY29sb3IgPSBjb2xvbnkpLAogICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IHdyYXAoInNtb290aCIsIHNlID0gRiwgYWxwaGEgPSAwLjUsIHNpemUgPSAwLjEpICksIAogICAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKCJjb3IiLCBzaXplID0gMi41KSkpKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQoKYGBgCgpkZiB3aXRoIGZpbHRyYXRpb24gb24gU1NFIDwgMC4wNQpgYGB7cn0KIyBmaWcyLmRmLjIgJT4lIAojICAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiMgICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAojICAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywgCiMgICAgICAgICAgdC5oYWxmID0gbG9nKDIpL2R5KSAlPiUgCiMgICBmaWx0ZXIoZGVncm9uID09ICJtT0RDLjIiLHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPiAwKSAlPiUgCiMgICBnZ3BhaXJzLmN1c3RvbWUoLikKCgptb2RjLmdncC5wbHQgPC0gZmlnMi5kZi5tYXQgJT4lIAogIGZpbHRlcihkbSA+IDAuMDAwMDE1KSAlPiUgCiAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiAgICAgICAgIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAgLCByZnAubWVhbi5iZy5zdWIucHVuY3RhKSwKICAgICAgICAgZWxpcGVfc2hhcGUgPSBFbGlwX0IvRWxpcF9DLCAKICAgICAgICAgdC5oYWxmID0gbG9nKDIpL2R5LAogICAgICAgICBkbSA9IGxvZzEwKGRtKSkgJT4lIAogIGZpbHRlcihkZWdyb24gPT0gIm1PREMuMiIscmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JSAKICBnZ3BhaXJzLmN1c3RvbWUoLikrCiAgZ2d0aXRsZSgiU2luZ2xlLUNlbGwgQ29ycmVsYXRpb25zIG9mIFZhcmlvdXMgQ2VsbHVsYXIgRmVhdHVyZXMgb2YgR0ZQLW1PREMgc3RyYWluIikKCm1vZGMuZ2dwLnBsdApgYGAKCiN3aXRob3V0IHRoZSBTU0UgPDAuMDUgZmlsdGVyIGZvciBtT0RDCmBgYHtyfQptb2RjLmdncC5wbHQgPC0gZmlnMi5kZi5tYXQgJT4lIAogIG11dGF0ZShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAsIGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSAsIAogICAgICAgICByZnAubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwICwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksCiAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywgCiAgICAgICAgIHQuaGFsZiA9IGxvZygyKS9keSkgJT4lIAogIGZpbHRlcihkZWdyb24gPT0gIm1PREMuMiIscmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JSAKICBnZ3BhaXJzLmN1c3RvbWUoLikrCiAgZ2d0aXRsZSgiU2luZ2xlLUNlbGwgQ29ycmVsYXRpb25zIG9mIFZhcmlvdXMgQ2VsbHVsYXIgRmVhdHVyZXMgb2YgR0ZQLW1PREMgc3RyYWluIikKCgojIGZpZzIuZGYuYWxsLjIgJT4lIAojICAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiMgICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAojICAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywgCiMgICAgICAgICAgdC5oYWxmID0gbG9nKDIpL2R5KSAlPiUgCiMgICBmaWx0ZXIoZGVncm9uID09ICJtT0RDLjIiLHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPiAwKSAlPiUgCiMgICBnZ3BhaXJzLmN1c3RvbWUoLikKCgoKbW9kYy5nZ3AucGx0CmBgYAoKI3dpdGggcHJvdGVhc29tZSBpbmhpYml0b3JzCmBgYHtyfQp0cnQubGlzdCA8LSBmaWcyLmRmLm1hdCAlPiUgCiAgZmlsdGVyKGRtID4gMC4wMDAwMTUpICU+JSAKICBtdXRhdGUoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwLCBkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSkgLCAKICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAogICAgICAgICBlbGlwZV9zaGFwZSA9IEVsaXBfQi9FbGlwX0MsIAogICAgICAgICB0LmhhbGYgPSBsb2coMikvZHksCiAgICAgICAgIGRtID0gbG9nMTAoZG0pKSAlPiUgCiAgZmlsdGVyKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPiAwLCB0cmVhdG1lbnQgIT0gIm5vbmUiKSAlPiUgc3BsaXQoLiR0cmVhdG1lbnQpICAKICAKCmxhcHBseSh0cnQubGlzdCwgZnVuY3Rpb24oYSl7CiAgYSAlPiUgCiAgICBnZ3BhaXJzLmN1c3RvbWUoLikrCiAgICBnZ3RpdGxlKGEkdHJlYXRtZW50WzFdKQp9KQoKCmBgYAoKZm9yIENMTjItR0ZQCmBgYHtyfQojIGZpZzIuZGYgJT4lIAojICAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiMgICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAojICAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywgCiMgICAgICAgICAgdC5oYWxmID0gbG9nKDIpL2R5KSAlPiUgCiMgICBmaWx0ZXIoZGVncm9uID09ICJjbG4yLjMiLCByZnAubWVhbi5iZy5zdWIucHVuY3RhID4gMCkgJT4lCiMgICBnZ3BhaXJzLmN1c3RvbWUoLikKCiNwZWFyc29uCmNsbjIuZ2dwLnBsdC4xIDwtIGZpZzIuZGYubWF0ICU+JSAKICBtdXRhdGUoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwLCBkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSkgLCAKICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAogICAgICAgICBlbGlwZV9zaGFwZSA9IEVsaXBfQi9FbGlwX0MsIAogICAgICAgICB0LmhhbGYgPSBsb2coMikvZHksCiAgICAgICAgIGRtID0gbG9nMTAoZG0pKSAlPiUgCiAgZmlsdGVyKGRlZ3JvbiA9PSAiY2xuMi4zIiwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JQogIGdncGFpcnMuY3VzdG9tZSguKSsKICBnZ3RpdGxlKCJTaW5nbGUtQ2VsbCBDb3JyZWxhdGlvbnMgb2YgVmFyaW91cyBDZWxsdWxhciBGZWF0dXJlcyBvZiBHRlAtQ0xOMiBzdHJhaW4iKQoKY2xuMi5nZ3AucGx0LjIgPC0gZmlnMi5kZi5tYXQgJT4lIAogIG11dGF0ZShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAsIGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSAsIAogICAgICAgICByZnAubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwICwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksCiAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywgCiAgICAgICAgIHQuaGFsZiA9IGxvZygyKS9keSwKICAgICAgICAgZG0gPSBsb2cxMChkbSkpICU+JSAKICBmaWx0ZXIoZGVncm9uID09ICJjbG4yLjQiLCByZnAubWVhbi5iZy5zdWIucHVuY3RhID4gMCkgJT4lCiAgZ2dwYWlycy5jdXN0b21lKC4pKwogIGdndGl0bGUoIlNpbmdsZS1DZWxsIENvcnJlbGF0aW9ucyBvZiBWYXJpb3VzIENlbGx1bGFyIEZlYXR1cmVzIG9mIEdGUC1DTE4yIHN0cmFpbiAoMTAtNy0yMikiKQoKCmNsbjIuZ2dwLnBsdC4xCmNsbjIuZ2dwLnBsdC4yCgojaWYgeW91IHBpY2sgaHRlIG1hdHVyYXRpb24gbW9kZWwgZm9yIGFsbCB0aGUgZGVncm9ucwojIGZpZzIuZGYubWF0ICU+JSAKIyAgIGZpbHRlcih2YWx1ZSA8IDAuMDUpICU+JSAKIyAgIG11dGF0ZShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAsIGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSAsIAojICAgICAgICAgIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAgLCByZnAubWVhbi5iZy5zdWIucHVuY3RhKSwKIyAgICAgICAgICBlbGlwZV9zaGFwZSA9IEVsaXBfQi9FbGlwX0MsIAojICAgICAgICAgIHQuaGFsZiA9IGxvZygyKS9keSkgJT4lIAojICAgZmlsdGVyKGRlZ3JvbiA9PSAiY2xuMi4zIiwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JQojICAgZ2dwYWlycy5jdXN0b21lKC4pKwojICAgZ2d0aXRsZSgiU2luZ2xlLUNlbGwgQ29ycmVsYXRpb25zIG9mIHZhcmlvdXMgY2VsbHVsYXIgZmVhdHVyZXMiKQoKY2xuMi5nZ3AucGx0LmNvbWIgPC0gZmlnMi5kZi5tYXQgJT4lIAogIG11dGF0ZShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAsIGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSAsIAogICAgICAgICByZnAubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwICwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksCiAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywgCiAgICAgICAgIHQuaGFsZiA9IGxvZygyKS9keSwKICAgICAgICAgZG0gPSBsb2cxMChkbSkpICU+JSAKICBmaWx0ZXIoZGVncm9uICVpbiUgYygiY2xuMi4zIiwiY2xuMi40IiksIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPiAwKSAlPiUKICBtdXRhdGUoZGVncm9uID0gaWZlbHNlKGRlZ3JvbiAlaW4lIGMoImNsbjIuMyIsImNsbjIuNCIpLCAiR0ZQLUNMTjIiLCBkZWdyb24pKSAlPiUgCiAgZ2dwYWlycy5jdXN0b21lKC4pKwogIGdndGl0bGUoIlNpbmdsZS1DZWxsIENvcnJlbGF0aW9ucyBvZiBWYXJpb3VzIENlbGx1bGFyIEZlYXR1cmVzIG9mIEdGUC1DTE4yIikKY2xuMi5nZ3AucGx0LmNvbWIKYGBgCgpUaGUgcmVsYXRpb25zaGlwIGRvZXMnbnQgY2hhbmdlIHdoZW4geW91IHVzZSBkeSBmcm9tIGR5LmRtIG9yIGV4cG9uZW50aWFsIG1vZGVsIGZvciB0aGUgQ0xOMi4zIGV4cGVyaW1lbnQgCgpgYGB7cn0Kc3RhYmxlLmdncC5wbHQuMSA8LSBmaWcyLmRmLm1hdCAlPiUgCiAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiAgICAgICAgIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAgLCByZnAubWVhbi5iZy5zdWIucHVuY3RhKSwKICAgICAgICAgZWxpcGVfc2hhcGUgPSBFbGlwX0IvRWxpcF9DLAogICAgICAgICB0LmhhbGYgPSBsb2coMikvZHksCiAgICAgICAgIGRtID0gbG9nMTAoZG0pKSAlPiUgCiAgZmlsdGVyKGRlZ3JvbiA9PSAic3RhYmxlLjIiLCByZnAubWVhbi5iZy5zdWIucHVuY3RhID4gMCkgJT4lIAogIGdncGFpcnMuY3VzdG9tZSguKSsKICBnZ3RpdGxlKCJTaW5nbGUtQ2VsbCBDb3JyZWxhdGlvbnMgb2YgVmFyaW91cyBDZWxsdWxhciBGZWF0dXJlcyBvZiBHRlAgc3RyYWluIikKCgpzdGFibGUuZ2dwLnBsdC4yIDwtIGZpZzIuZGYubWF0ICU+JSAKICBtdXRhdGUoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEoZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpLCAwLCBkYXBpLm1lYW4uYmcuc3ViLnB1bmN0YSkgLCAKICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAogICAgICAgICBlbGlwZV9zaGFwZSA9IEVsaXBfQi9FbGlwX0MsCiAgICAgICAgIHQuaGFsZiA9IGxvZygyKS9keSwKICAgICAgICAgZG0gPSBsb2cxMChkbSkpICU+JSAKICBmaWx0ZXIoZGVncm9uID09ICJzdGFibGUuMyIsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPiAwKSAlPiUgCiAgZ2dwYWlycy5jdXN0b21lKC4pKwogIGdndGl0bGUoIlNpbmdsZS1DZWxsIENvcnJlbGF0aW9ucyBvZiBWYXJpb3VzIENlbGx1bGFyIEZlYXR1cmVzIG9mIEdGUCBzdHJhaW4gKDEwLTctMjIpIikKCnN0YWJsZS5nZ3AucGx0LjEKc3RhYmxlLmdncC5wbHQuMgoKCgojIGZpZzIuZGYgJT4lIAojICAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiMgICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAojICAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywKIyAgICAgICAgICB0LmhhbGYgPSBsb2coMikvZHkpICU+JSAKIyAgIGZpbHRlcihkZWdyb24gPT0gInN0YWJsZS4yIiwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JSAKIyAgIGdncGFpcnMuY3VzdG9tZSguKQoKIyBmaWcyLmRmLm1hdCAlPiUgZmlsdGVyKHZhbHVlIDwgMC4wNSkgJT4lIAojICAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiMgICAgICAgICAgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA9IGlmZWxzZShpcy5uYShyZnAubWVhbi5iZy5zdWIucHVuY3RhKSwgMCAsIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEpLAojICAgICAgICAgIGVsaXBlX3NoYXBlID0gRWxpcF9CL0VsaXBfQywKIyAgICAgICAgICB0LmhhbGYgPSBsb2coMikvZHkpICU+JSAKIyAgIGZpbHRlcihkZWdyb24gPT0gInN0YWJsZS4yIiwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JSAKIyAgIGdncGFpcnMuY3VzdG9tZSguKQoKc3RhYmxlLmdncC5wbHQuY29tYiA8LSBmaWcyLmRmLm1hdCAlPiUgCiAgbXV0YXRlKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhID0gaWZlbHNlKGlzLm5hKGRhcGkubWVhbi5iZy5zdWIucHVuY3RhKSwgMCwgZGFwaS5tZWFuLmJnLnN1Yi5wdW5jdGEpICwgCiAgICAgICAgIHJmcC5tZWFuLmJnLnN1Yi5wdW5jdGEgPSBpZmVsc2UoaXMubmEocmZwLm1lYW4uYmcuc3ViLnB1bmN0YSksIDAgLCByZnAubWVhbi5iZy5zdWIucHVuY3RhKSwKICAgICAgICAgZWxpcGVfc2hhcGUgPSBFbGlwX0IvRWxpcF9DLAogICAgICAgICB0LmhhbGYgPSBsb2coMikvZHksCiAgICAgICAgIGRtID0gbG9nMTAoZG0pKSAlPiUgCiAgZmlsdGVyKGRlZ3JvbiAlaW4lIGMoInN0YWJsZS4yIiwic3RhYmxlLjMiKSwgcmZwLm1lYW4uYmcuc3ViLnB1bmN0YSA+IDApICU+JSAKICBtdXRhdGUoZGVncm9uID0gaWZlbHNlKGRlZ3JvbiAlaW4lIGMoInN0YWJsZS4yIiwic3RhYmxlLjMiKSwgInllR0ZQIiwgZGVncm9uKSkgJT4lIAogIGdncGFpcnMuY3VzdG9tZSguKSsKICBnZ3RpdGxlKCJTaW5nbGUtQ2VsbCBDb3JyZWxhdGlvbnMgb2YgVmFyaW91cyBDZWxsdWxhciBGZWF0dXJlcyBvZiB5ZUdGUCIpCnN0YWJsZS5nZ3AucGx0LmNvbWIKYGBgCgojc3VwcGxlbWVudGFsIGZpZ3VyZSA0IApgYGB7cn0KZ2dzYXZlKHBsb3QgPSBjbG4yLmdncC5wbHQuMSwgIHBhdGggPSAifi9wbG90cy9wYXBlcjEvZmlndXJlcy9maWdfMi9zdXBwbGVtZW50YWxfZmlncy8iLCBmaWxlbmFtZSA9ICJmaWdzNGEucGRmIiwgd2lkdGggPSA4LCBoZWlnaHQgPSA1KQpnZ3NhdmUocGxvdCA9IGNsbjIuZ2dwLnBsdC4xLCAgcGF0aCA9ICJ+L3Bsb3RzL3BhcGVyMS9maWd1cmVzL2ZpZ18yL3N1cHBsZW1lbnRhbF9maWdzLyIsIGZpbGVuYW1lID0gImZpZ3M0YS5wbmciLCB3aWR0aCA9IDgsIGhlaWdodCA9IDUpCgpnZ3NhdmUocGxvdCA9IGNsbjIuZ2dwLnBsdC4yLCAgcGF0aCA9ICJ+L3Bsb3RzL3BhcGVyMS9maWd1cmVzL2ZpZ18yL3N1cHBsZW1lbnRhbF9maWdzLyIsIGZpbGVuYW1lID0gImZpZ3M0YV8yLnBkZiIsIHdpZHRoID0gOCwgaGVpZ2h0ID0gNSkKZ2dzYXZlKHBsb3QgPSBjbG4yLmdncC5wbHQuMiwgIHBhdGggPSAifi9wbG90cy9wYXBlcjEvZmlndXJlcy9maWdfMi9zdXBwbGVtZW50YWxfZmlncy8iLCBmaWxlbmFtZSA9ICJmaWdzNGFfMi5wbmciLCB3aWR0aCA9IDgsIGhlaWdodCA9IDUpCgpnZ3NhdmUocGxvdCA9IG1vZGMuZ2dwLnBsdCwgIHBhdGggPSAifi9wbG90cy9wYXBlcjEvZmlndXJlcy9maWdfMi9zdXBwbGVtZW50YWxfZmlncy8iLCBmaWxlbmFtZSA9ICJmaWdzNGIucGRmIiwgd2lkdGggPSA4LCBoZWlnaHQgPSA1KQpnZ3NhdmUocGxvdCA9IG1vZGMuZ2dwLnBsdCwgIHBhdGggPSAifi9wbG90cy9wYXBlcjEvZmlndXJlcy9maWdfMi9zdXBwbGVtZW50YWxfZmlncy8iLCBmaWxlbmFtZSA9ICJmaWdzNGIucG5nIiwgd2lkdGggPSA4LCBoZWlnaHQgPSA1KQoKCmdnc2F2ZShwbG90ID0gc3RhYmxlLmdncC5wbHQuMSwgIHBhdGggPSAifi9wbG90cy9wYXBlcjEvZmlndXJlcy9maWdfMi9zdXBwbGVtZW50YWxfZmlncy8iLCBmaWxlbmFtZSA9ICJmaWdzNGMucGRmIiwgd2lkdGggPSA4LCBoZWlnaHQgPSA1KQpnZ3NhdmUocGxvdCA9IHN0YWJsZS5nZ3AucGx0LjEsICBwYXRoID0gIn4vcGxvdHMvcGFwZXIxL2ZpZ3VyZXMvZmlnXzIvc3VwcGxlbWVudGFsX2ZpZ3MvIiwgZmlsZW5hbWUgPSAiZmlnczRjLnBuZyIsIHdpZHRoID0gOCwgaGVpZ2h0ID0gNSkKCmdnc2F2ZShwbG90ID0gc3RhYmxlLmdncC5wbHQuMiwgIHBhdGggPSAifi9wbG90cy9wYXBlcjEvZmlndXJlcy9maWdfMi9zdXBwbGVtZW50YWxfZmlncy8iLCBmaWxlbmFtZSA9ICJmaWdzNGNfMi5wZGYiLCB3aWR0aCA9IDgsIGhlaWdodCA9IDUpCmdnc2F2ZShwbG90ID0gc3RhYmxlLmdncC5wbHQuMiwgIHBhdGggPSAifi9wbG90cy9wYXBlcjEvZmlndXJlcy9maWdfMi9zdXBwbGVtZW50YWxfZmlncy8iLCBmaWxlbmFtZSA9ICJmaWdzNGNfMi5wbmciLCB3aWR0aCA9IDgsIGhlaWdodCA9IDUpCgoKYGBgCgo=